pyegeria 5.4.3.4__py3-none-any.whl → 5.4.4.1__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (215) hide show
  1. commands/cat/dr_egeria_command_help.py +11 -17
  2. commands/cat/list_format_set.py +3 -1
  3. md_processing/__init__.py +9 -1
  4. md_processing/data/commands.json +6951 -541
  5. md_processing/data/generated_format_sets.json +4137 -0
  6. md_processing/data/generated_format_sets.py +51 -0
  7. md_processing/dr_egeria.py +14 -2
  8. md_processing/md_commands/ext_ref_commands.py +543 -0
  9. md_processing/md_commands/old_solution_architect_commands.py +1139 -0
  10. md_processing/md_commands/solution_architect_commands.py +26 -59
  11. md_processing/md_processing_utils/debug_log +186 -3
  12. md_processing/md_processing_utils/debug_log.2025-09-09_11-10-03_528597.zip +0 -0
  13. md_processing/md_processing_utils/dr-egeria-help-2025-09-09T11:10:03.md +3305 -0
  14. md_processing/md_processing_utils/dr-egeria-help-2025-09-10T14:49:49.md +3460 -0
  15. md_processing/md_processing_utils/dr-egeria-help-2025-09-10T14:57:46.md +472 -0
  16. md_processing/md_processing_utils/gen_format_sets.py +422 -0
  17. md_processing/md_processing_utils/generate_md_cmd_templates.py +4 -4
  18. md_processing/md_processing_utils/md_processing_constants.py +19 -1
  19. pyegeria/_output_formats.py +240 -86
  20. pyegeria/collection_manager.py +3 -3
  21. pyegeria/egeria_tech_client.py +3 -0
  22. pyegeria/external_references.py +1794 -0
  23. pyegeria/glossary_manager.py +2 -2
  24. pyegeria/solution_architect.py +290 -485
  25. {pyegeria-5.4.3.4.dist-info → pyegeria-5.4.4.1.dist-info}/METADATA +1 -1
  26. {pyegeria-5.4.3.4.dist-info → pyegeria-5.4.4.1.dist-info}/RECORD +29 -205
  27. commands/.DS_Store +0 -0
  28. commands/cat/.DS_Store +0 -0
  29. commands/cat/.env +0 -8
  30. commands/cat/debug_log.2025-08-29_07-07-27_848189.log.zip +0 -0
  31. commands/cat/debug_log.2025-08-30_21-15-48_528443.log.zip +0 -0
  32. commands/cat/debug_log.2025-09-01_07-02-58_818650.log.zip +0 -0
  33. commands/cat/debug_log.2025-09-02_07-44-39_567276.log.zip +0 -0
  34. commands/cat/debug_log.2025-09-03_07-45-21_986388.log.zip +0 -0
  35. commands/cat/debug_log.log +0 -7276
  36. commands/cat/logs/pyegeria.log +0 -90
  37. commands/cli/debug_log.log +0 -0
  38. commands/doc/.DS_Store +0 -0
  39. commands/ops/logs/pyegeria.log +0 -0
  40. md_processing/.DS_Store +0 -0
  41. md_processing/.idea/.gitignore +0 -8
  42. md_processing/.idea/inspectionProfiles/Project_Default.xml +0 -59
  43. md_processing/.idea/md_processing.iml +0 -15
  44. md_processing/.idea/modules.xml +0 -8
  45. md_processing/.idea/sonarlint/issuestore/index.pb +0 -0
  46. md_processing/.idea/sonarlint/securityhotspotstore/index.pb +0 -0
  47. md_processing/.idea/vcs.xml +0 -6
  48. md_processing/.idea/workspace.xml +0 -107
  49. md_processing/dr_egeria_inbox/Derive-Dr-Gov-Defs.md +0 -8
  50. md_processing/dr_egeria_inbox/Dr.Egeria Templates.md +0 -873
  51. md_processing/dr_egeria_inbox/arch_test.md +0 -57
  52. md_processing/dr_egeria_inbox/archive/dr_egeria_intro.md +0 -254
  53. md_processing/dr_egeria_inbox/archive/dr_egeria_intro_more_terms.md +0 -696
  54. md_processing/dr_egeria_inbox/archive/dr_egeria_intro_part1.md +0 -254
  55. md_processing/dr_egeria_inbox/archive/dr_egeria_intro_part2.md +0 -298
  56. md_processing/dr_egeria_inbox/archive/dr_egeria_intro_part3.md +0 -608
  57. md_processing/dr_egeria_inbox/archive/dr_egeria_intro_part4.md +0 -94
  58. md_processing/dr_egeria_inbox/archive/freddie_intro.md +0 -284
  59. md_processing/dr_egeria_inbox/archive/freddie_intro_orig.md +0 -275
  60. md_processing/dr_egeria_inbox/archive/test-term.md +0 -110
  61. md_processing/dr_egeria_inbox/cat_test.md +0 -100
  62. md_processing/dr_egeria_inbox/collections.md +0 -39
  63. md_processing/dr_egeria_inbox/data_designer_debug.log +0 -6
  64. md_processing/dr_egeria_inbox/data_designer_out.md +0 -60
  65. md_processing/dr_egeria_inbox/data_designer_search_test.md +0 -11
  66. md_processing/dr_egeria_inbox/data_field.md +0 -54
  67. md_processing/dr_egeria_inbox/data_spec.md +0 -77
  68. md_processing/dr_egeria_inbox/data_spec_test.md +0 -2014
  69. md_processing/dr_egeria_inbox/data_test.md +0 -179
  70. md_processing/dr_egeria_inbox/data_test2.md +0 -429
  71. md_processing/dr_egeria_inbox/data_test3.md +0 -462
  72. md_processing/dr_egeria_inbox/dr_egeria_data_designer_1.md +0 -124
  73. md_processing/dr_egeria_inbox/dr_egeria_intro_categories.md +0 -168
  74. md_processing/dr_egeria_inbox/dr_egeria_intro_part1.md +0 -280
  75. md_processing/dr_egeria_inbox/dr_egeria_intro_part2.md +0 -318
  76. md_processing/dr_egeria_inbox/dr_egeria_intro_part3.md +0 -1073
  77. md_processing/dr_egeria_inbox/dr_egeria_isc1.md +0 -44
  78. md_processing/dr_egeria_inbox/generated_help_report.md +0 -9
  79. md_processing/dr_egeria_inbox/generated_help_terms.md +0 -842
  80. md_processing/dr_egeria_inbox/glossary_list.md +0 -5
  81. md_processing/dr_egeria_inbox/glossary_search_test.md +0 -40
  82. md_processing/dr_egeria_inbox/glossary_test1.md +0 -378
  83. md_processing/dr_egeria_inbox/gov_def.md +0 -718
  84. md_processing/dr_egeria_inbox/gov_def2.md +0 -447
  85. md_processing/dr_egeria_inbox/img.png +0 -0
  86. md_processing/dr_egeria_inbox/output_tests.md +0 -114
  87. md_processing/dr_egeria_inbox/product.md +0 -219
  88. md_processing/dr_egeria_inbox/rel.md +0 -8
  89. md_processing/dr_egeria_inbox/sb.md +0 -119
  90. md_processing/dr_egeria_inbox/solution-components.md +0 -136
  91. md_processing/dr_egeria_inbox/solution_blueprints.md +0 -118
  92. md_processing/dr_egeria_inbox/synonym_test.md +0 -42
  93. md_processing/dr_egeria_inbox/t2.md +0 -268
  94. md_processing/dr_egeria_outbox/.DS_Store +0 -0
  95. md_processing/dr_egeria_outbox/.obsidian/app.json +0 -1
  96. md_processing/dr_egeria_outbox/.obsidian/appearance.json +0 -1
  97. md_processing/dr_egeria_outbox/.obsidian/community-plugins.json +0 -7
  98. md_processing/dr_egeria_outbox/.obsidian/core-plugins.json +0 -33
  99. md_processing/dr_egeria_outbox/.obsidian/plugins/buttons/main.js +0 -5164
  100. md_processing/dr_egeria_outbox/.obsidian/plugins/buttons/manifest.json +0 -10
  101. md_processing/dr_egeria_outbox/.obsidian/plugins/buttons/styles.css +0 -624
  102. md_processing/dr_egeria_outbox/.obsidian/plugins/calendar/data.json +0 -10
  103. md_processing/dr_egeria_outbox/.obsidian/plugins/calendar/main.js +0 -4459
  104. md_processing/dr_egeria_outbox/.obsidian/plugins/calendar/manifest.json +0 -10
  105. md_processing/dr_egeria_outbox/.obsidian/plugins/obsidian-kanban/data.json +0 -3
  106. md_processing/dr_egeria_outbox/.obsidian/plugins/obsidian-kanban/main.js +0 -153
  107. md_processing/dr_egeria_outbox/.obsidian/plugins/obsidian-kanban/manifest.json +0 -11
  108. md_processing/dr_egeria_outbox/.obsidian/plugins/obsidian-kanban/styles.css +0 -1
  109. md_processing/dr_egeria_outbox/.obsidian/plugins/obsidian-tasks-plugin/main.js +0 -500
  110. md_processing/dr_egeria_outbox/.obsidian/plugins/obsidian-tasks-plugin/manifest.json +0 -12
  111. md_processing/dr_egeria_outbox/.obsidian/plugins/obsidian-tasks-plugin/styles.css +0 -1
  112. md_processing/dr_egeria_outbox/.obsidian/plugins/templater-obsidian/data.json +0 -38
  113. md_processing/dr_egeria_outbox/.obsidian/plugins/templater-obsidian/main.js +0 -37
  114. md_processing/dr_egeria_outbox/.obsidian/plugins/templater-obsidian/manifest.json +0 -11
  115. md_processing/dr_egeria_outbox/.obsidian/plugins/templater-obsidian/styles.css +0 -220
  116. md_processing/dr_egeria_outbox/.obsidian/types.json +0 -28
  117. md_processing/dr_egeria_outbox/.obsidian/workspace.json +0 -270
  118. md_processing/dr_egeria_outbox/Button Test.md +0 -11
  119. md_processing/dr_egeria_outbox/Scripts/.DS_Store +0 -0
  120. md_processing/dr_egeria_outbox/Scripts/sendRest.js +0 -24
  121. md_processing/dr_egeria_outbox/Templates/sendToApi.md.md +0 -17
  122. md_processing/dr_egeria_outbox/Untitled.canvas +0 -1
  123. md_processing/dr_egeria_outbox/monday/processed-2025-09-01 09:26-product.md +0 -210
  124. md_processing/dr_egeria_outbox/monday/processed-2025-09-01 14:03-product.md +0 -209
  125. md_processing/dr_egeria_outbox/monday/processed-2025-09-01 14:24-product.md +0 -263
  126. md_processing/dr_egeria_outbox/monday/processed-2025-09-01 16:03-data_spec_test.md +0 -2374
  127. md_processing/dr_egeria_outbox/monday/processed-2025-09-01 16:05-data_spec_test.md +0 -2374
  128. md_processing/dr_egeria_outbox/monday/processed-2025-09-02 08:28-data_spec_test.md +0 -2321
  129. md_processing/dr_egeria_outbox/monday/processed-2025-09-02 08:37-data_spec_test.md +0 -2304
  130. md_processing/dr_egeria_outbox/monday/processed-2025-09-02 08:56-data_spec_test.md +0 -2324
  131. md_processing/dr_egeria_outbox/monday/processed-2025-09-02 09:00-data_spec_test.md +0 -2324
  132. md_processing/dr_egeria_outbox/processed-2025-08-30 16:56-generated_help_terms.md +0 -795
  133. md_processing/dr_egeria_outbox/thursday/processed-2025-07-17 15:00-Derive-Dr-Gov-Defs.md +0 -719
  134. md_processing/dr_egeria_outbox/thursday/processed-2025-07-17 20:13-Derive-Dr-Gov-Defs.md +0 -41
  135. md_processing/dr_egeria_outbox/thursday/processed-2025-07-17 20:14-Derive-Dr-Gov-Defs.md +0 -33
  136. md_processing/dr_egeria_outbox/thursday/processed-2025-07-17 20:50-Derive-Dr-Gov-Defs.md +0 -192
  137. md_processing/dr_egeria_outbox/thursday/processed-2025-07-17 22:08-gov_def2.md +0 -486
  138. md_processing/dr_egeria_outbox/thursday/processed-2025-07-17 22:10-gov_def2.md +0 -486
  139. md_processing/dr_egeria_outbox/thursday/processed-2025-07-18 08:53-gov_def2.md +0 -486
  140. md_processing/dr_egeria_outbox/thursday/processed-2025-07-18 08:54-gov_def2.md +0 -486
  141. md_processing/dr_egeria_outbox/thursday/processed-2025-07-18 09:03-gov_def2.md +0 -486
  142. md_processing/dr_egeria_outbox/thursday/processed-2025-07-18 09:06-gov_def2.md +0 -486
  143. md_processing/dr_egeria_outbox/thursday/processed-2025-07-18 09:10-gov_def2.md +0 -486
  144. md_processing/family_docs/Data Designer/Create_Data_Class.md +0 -164
  145. md_processing/family_docs/Data Designer/Create_Data_Dictionary.md +0 -30
  146. md_processing/family_docs/Data Designer/Create_Data_Field.md +0 -162
  147. md_processing/family_docs/Data Designer/Create_Data_Specification.md +0 -36
  148. md_processing/family_docs/Data Designer/Create_Data_Structure.md +0 -38
  149. md_processing/family_docs/Data Designer/View_Data_Classes.md +0 -78
  150. md_processing/family_docs/Data Designer/View_Data_Dictionaries.md +0 -78
  151. md_processing/family_docs/Data Designer/View_Data_Fields.md +0 -78
  152. md_processing/family_docs/Data Designer/View_Data_Specifications.md +0 -78
  153. md_processing/family_docs/Data Designer/View_Data_Structures.md +0 -78
  154. md_processing/family_docs/Data Designer.md +0 -842
  155. md_processing/family_docs/Digital Product Manager/Add_Member->Collection.md +0 -42
  156. md_processing/family_docs/Digital Product Manager/Attach_Collection->Resource.md +0 -36
  157. md_processing/family_docs/Digital Product Manager/Create_Agreement.md +0 -96
  158. md_processing/family_docs/Digital Product Manager/Create_Data_Sharing_Agreement.md +0 -72
  159. md_processing/family_docs/Digital Product Manager/Create_DigitalSubscription.md +0 -102
  160. md_processing/family_docs/Digital Product Manager/Create_Digital_Product.md +0 -134
  161. md_processing/family_docs/Digital Product Manager/Link_Agreement_Items.md +0 -60
  162. md_processing/family_docs/Digital Product Manager/Link_Contracts.md +0 -26
  163. md_processing/family_docs/Digital Product Manager/Link_Digital_Product_-_Digital_Product.md +0 -30
  164. md_processing/family_docs/Digital Product Manager/Link_Subscribers.md +0 -48
  165. md_processing/family_docs/Digital Product Manager.md +0 -668
  166. md_processing/family_docs/Glossary/Attach_Category_Parent.md +0 -18
  167. md_processing/family_docs/Glossary/Attach_Term-Term_Relationship.md +0 -26
  168. md_processing/family_docs/Glossary/Create_Category.md +0 -38
  169. md_processing/family_docs/Glossary/Create_Glossary.md +0 -42
  170. md_processing/family_docs/Glossary/Create_Term.md +0 -70
  171. md_processing/family_docs/Glossary.md +0 -206
  172. md_processing/family_docs/Governance Officer/Create_Business_Imperative.md +0 -106
  173. md_processing/family_docs/Governance Officer/Create_Certification_Type.md +0 -112
  174. md_processing/family_docs/Governance Officer/Create_Governance_Approach.md +0 -114
  175. md_processing/family_docs/Governance Officer/Create_Governance_Obligation.md +0 -114
  176. md_processing/family_docs/Governance Officer/Create_Governance_Principle.md +0 -114
  177. md_processing/family_docs/Governance Officer/Create_Governance_Procedure.md +0 -128
  178. md_processing/family_docs/Governance Officer/Create_Governance_Process.md +0 -122
  179. md_processing/family_docs/Governance Officer/Create_Governance_Processing_Purpose.md +0 -106
  180. md_processing/family_docs/Governance Officer/Create_Governance_Responsibility.md +0 -122
  181. md_processing/family_docs/Governance Officer/Create_Governance_Rule.md +0 -122
  182. md_processing/family_docs/Governance Officer/Create_Governance_Strategy.md +0 -106
  183. md_processing/family_docs/Governance Officer/Create_License_Type.md +0 -112
  184. md_processing/family_docs/Governance Officer/Create_Naming_Standard_Rule.md +0 -122
  185. md_processing/family_docs/Governance Officer/Create_Regulation_Article.md +0 -106
  186. md_processing/family_docs/Governance Officer/Create_Regulation_Definition.md +0 -118
  187. md_processing/family_docs/Governance Officer/Create_Security_Access_Control.md +0 -114
  188. md_processing/family_docs/Governance Officer/Create_Security_Group.md +0 -120
  189. md_processing/family_docs/Governance Officer/Create_Service_Level_Objectives.md +0 -122
  190. md_processing/family_docs/Governance Officer/Create_Threat_Definition.md +0 -106
  191. md_processing/family_docs/Governance Officer/Link_Governance_Controls.md +0 -32
  192. md_processing/family_docs/Governance Officer/Link_Governance_Drivers.md +0 -32
  193. md_processing/family_docs/Governance Officer/Link_Governance_Policies.md +0 -32
  194. md_processing/family_docs/Governance Officer/View_Governance_Definitions.md +0 -82
  195. md_processing/family_docs/Governance Officer.md +0 -2412
  196. md_processing/family_docs/Solution Architect/Create_Information_Supply_Chain.md +0 -70
  197. md_processing/family_docs/Solution Architect/Create_Solution_Blueprint.md +0 -44
  198. md_processing/family_docs/Solution Architect/Create_Solution_Component.md +0 -96
  199. md_processing/family_docs/Solution Architect/Create_Solution_Role.md +0 -66
  200. md_processing/family_docs/Solution Architect/Link_Information_Supply_Chain_Peers.md +0 -32
  201. md_processing/family_docs/Solution Architect/Link_Solution_Component_Peers.md +0 -32
  202. md_processing/family_docs/Solution Architect/View_Information_Supply_Chains.md +0 -32
  203. md_processing/family_docs/Solution Architect/View_Solution_Blueprints.md +0 -32
  204. md_processing/family_docs/Solution Architect/View_Solution_Components.md +0 -32
  205. md_processing/family_docs/Solution Architect/View_Solution_Roles.md +0 -32
  206. md_processing/family_docs/Solution Architect.md +0 -490
  207. md_processing/md_commands/old_project_commands.py +0 -164
  208. md_processing/md_processing_utils/debug_log.log +0 -5580
  209. md_processing/md_processing_utils/generated_help_terms.md +0 -842
  210. md_processing/md_processing_utils/logs/pyegeria.log +0 -56
  211. pyegeria/.DS_Store +0 -0
  212. pyegeria/___external_references.py +0 -3255
  213. {pyegeria-5.4.3.4.dist-info → pyegeria-5.4.4.1.dist-info}/LICENSE +0 -0
  214. {pyegeria-5.4.3.4.dist-info → pyegeria-5.4.4.1.dist-info}/WHEEL +0 -0
  215. {pyegeria-5.4.3.4.dist-info → pyegeria-5.4.4.1.dist-info}/entry_points.txt +0 -0
@@ -11,6 +11,7 @@ import os
11
11
  import sys
12
12
  import time
13
13
 
14
+ from pydantic import ValidationError
14
15
  from rich import box
15
16
  from rich.console import Console
16
17
  from rich.markdown import Markdown
@@ -28,8 +29,8 @@ from pyegeria import (
28
29
  EgeriaTech,
29
30
  InvalidParameterException,
30
31
  PropertyServerException,
31
- UserNotAuthorizedException, NO_CATEGORIES_FOUND,
32
- )
32
+ UserNotAuthorizedException, NO_CATEGORIES_FOUND, PyegeriaException, print_basic_exception, print_validation_error,
33
+ )
33
34
  from commands.cat.glossary_actions import EGERIA_HOME_GLOSSARY_GUID
34
35
  from pyegeria._globals import NO_GLOSSARIES_FOUND
35
36
 
@@ -139,15 +140,7 @@ def display_command_terms(
139
140
  try:
140
141
  g_client = EgeriaTech(view_server, view_url, user_id, user_pass)
141
142
  token = g_client.create_egeria_bearer_token(user_id, user_pass)
142
- if (glossary_name is not None) and (glossary_name != "*"):
143
- glossary_guid = g_client.get_guid_for_name(glossary_name)
144
- if glossary_guid == NO_GLOSSARIES_FOUND:
145
- console.print(
146
- f"\nThe glossary name {glossary_name} was not found. Please try using the glossary guid"
147
- )
148
- sys.exit(1)
149
- elif (glossary_guid is not None) and (len(glossary_guid) < 10):
150
- glossary_guid = None
143
+
151
144
 
152
145
  if output_format == "LIST":
153
146
  action = "LIST"
@@ -158,7 +151,7 @@ def display_command_terms(
158
151
  file_name = f"Command-Help-{time.strftime('%Y-%m-%d-%H-%M-%S')}-{action}.md"
159
152
  full_file_path = os.path.join(file_path, file_name)
160
153
  os.makedirs(os.path.dirname(full_file_path), exist_ok=True)
161
- output = g_client.find_glossary_terms(search_string, glossary_guid, output_format=output_format)
154
+ output = g_client.find_glossary_terms(search_string, output_format=output_format, output_format_set="Help-Terms")
162
155
  if output == "NO_TERMS_FOUND":
163
156
  print(f"\n==> No commands found for search string '{search_string}'")
164
157
  return
@@ -168,12 +161,13 @@ def display_command_terms(
168
161
  return
169
162
 
170
163
  except (
171
- InvalidParameterException,
172
- PropertyServerException,
173
- UserNotAuthorizedException,
164
+ PyegeriaException
174
165
  ) as e:
175
- console.print_exception()
176
-
166
+ print_basic_exception(e)
167
+ except ValidationError as e:
168
+ print_validation_error(e)
169
+ except Exception as e:
170
+ console.print_exception(e)
177
171
 
178
172
 
179
173
  def generate_table(search_string: str, glossary_guid: str) -> Table:
@@ -55,7 +55,9 @@ from pyegeria import (
55
55
  )
56
56
  from pyegeria.config import settings
57
57
  from pyegeria.logging_configuration import config_logging
58
- from pyegeria._output_formats import (select_output_format_set, get_output_format_set_heading, get_output_format_set_description)
58
+ from pyegeria._output_formats import (select_output_format_set, get_output_format_set_heading,
59
+ load_user_format_sets, load_output_format_sets,
60
+ load_format_sets_from_json, get_output_format_set_description)
59
61
  from pyegeria._exceptions_new import PyegeriaException, print_exception_response
60
62
 
61
63
  # pydevd_pycharm.settrace('host.docker.internal', # Use 'host.docker.internal' to connect to the host machine
md_processing/__init__.py CHANGED
@@ -36,6 +36,13 @@ from md_processing.md_commands.glossary_commands import (process_glossary_upsert
36
36
  )
37
37
  from md_processing.md_commands.project_commands import (process_project_upsert_command, process_link_project_dependency_command,
38
38
  process_link_project_hierarchy_command)
39
+
40
+ from md_processing.md_commands.ext_ref_commands import (process_external_reference_upsert_command,
41
+ process_link_to_media_reference_command,
42
+ process_link_to_external_reference_command,
43
+ process_link_to_cited_document_command,
44
+ )
45
+
39
46
  # Re-export all functions from the original md_processing_utils.py to maintain backward compatibility
40
47
  from md_processing.md_processing_utils.common_md_utils import (render_markdown, is_valid_iso_date, set_debug_level,
41
48
  get_current_datetime_string, print_msg, EGERIA_WIDTH,
@@ -63,7 +70,8 @@ from md_processing.md_processing_utils.md_processing_constants import (ALWAYS, E
63
70
  ELEMENT_OUTPUT_FORMATS, TERM_RELATIONSHPS,
64
71
  command_list, COMMAND_DEFINITIONS, GOV_COM_LIST,
65
72
  GOV_LINK_LIST, COLLECTIONS_LIST, SIMPLE_COLLECTIONS,
66
- LIST_COMMANDS, PROJECT_COMMANDS)
73
+ LIST_COMMANDS, PROJECT_COMMANDS, EXT_REF_UPSERT,
74
+ LINK_EXT_REF, LINK_MEDIA, LINK_CITED_DOC)
67
75
  # Import functions from md_processing_constants
68
76
  from md_processing.md_processing_utils.md_processing_constants import (load_commands, get_command_spec, get_attribute,
69
77
  get_attribute_labels, get_alternate_names)